A "window" is a specially delineated area of a video display that is typically used to display information, such as a document or a message, to a user. Each window acts independently, as if it were a virtual display device, and each window is manipulated independently. The manipulations performed on a window include resizing the window or moving the window. A program, like an operating system or an application program, may display one or more windows.
FIG. 1 depicts a conventional window 100. The window 100 has a display area 110 that displays window contents, such as the text of a document, and a title bar 102 that displays meaningful information, like a title, to the user so that the user can identify the purpose of the window. Sometimes a window 100 may display a scroll bar when the window has more contents than can be displayed in the display area 110 at one time. The title bar 102 has a number of buttons 104, 106 and 108. Button 104 is used to close the window. When the window 100 is associated with an application program that displays only one window, activation of button 104 terminates both the window and the application program. Button 106 is used to enlarge the window so that it covers more of the video display. After being enlarged to cover the entire screen of the video display, button 106 can be activated again to return the window to its original size. When button 106 is used in this capacity, it is known as a "restore" button. Button 108 is used to minimize the representation of the window 100. The phrase "minimizing a window" refers to representing the window in a manner which is not fully functional, like representing the window as an icon or as a button. Once minimized, double-clicking on the icon maximizes the window 100 into a fully-functional representation of the window.
Some windowing systems, such as the Microsoft.RTM. Windows.RTM. 95 operating system from Microsoft Corporation of Redmond, Wash., are message based such that operations are achieved by passing messages between windows. In these systems, a window is created based upon a window class that identifies a window procedure which processes messages that are sent to the window. The windowing system supports a RegisterClass() function that enables an application program to register window classes.
In general, each application program in the windowing system with a user interface has an associated window procedure for each window that the application program displays. For each application program having a user interface, the windowing system maintains a message queue. When an event occurs, the event is translated into a message that is put into the message queue for the application program. Such an event includes keystrokes, timer events, manipulation of the mouse cursor, or manipulation of the mouse button. The "mouse cursor" reflects movements of a mouse input device on the video display. The mouse input device typically has a mouse button that activates the mouse. For example, when the user depresses the mouse button to activate the mouse, the operating system generates a "MOUSE.sub.-- DOWN" event and sends a corresponding message to the message queue of the application program. The application program retrieves and delivers messages in the message queue to the proper window procedure for processing (i.e., the window procedure of the window for which the event is intended). The window procedure, in turn, has a number of functions that the window procedure invokes depending on the specific event that has occurred. For example, the window procedure for a word processing program may invoke a specific function when both a MOUSE.sub.-- DOWN event has been received and the mouse cursor is within the display area of the window. Such a function may, for example, begin highlighting the text to indicate that the highlighted text is being selected. Since the message queue maintains the messages received from the windowing system, during the processing of functions invoked from a window procedure, the functions can make requests of the message queue to retrieve messages from the message queue.
The windowing system provides the ability to "subclass" either a control or another window. A "control" is a screen object, like a button or a scroll bar, that can be manipulated by the user to perform an action. A window sometimes contains one or more controls. The controls of the windowing system act much like windows by receiving messages from the windowing system. When subclassing a control or a window, the windowing system allows a program to receive all of the messages destined for that control or window. This technique is advantageous when a window displays a control on another window. For example, to integrate a scroll bar into the functionality of a window, the window needs to manage the operations of the scroll bar and, thus, needs to intercept the messages destined for the scroll bar to control its functionality. By intercepting the messages through subclassing, the program determines how the scroll bar behaves in response to a given message.
Although some application programs display many windows, the available space on the video display, known as the work space, is limited. As the number of windows displayed on the video display increases, it becomes more difficult for the user to perform their work on the workspace of the video display, as the workspace appears cluttered, much like a desk appears cluttered when lots of papers are strewn across it. Window clutter makes it more difficult for the user to perform their work, and thus, it is desirable to reduce window clutter.